
package com.saodisheng.service;

import com.jfinal.kit.Ret;
import com.jfinal.plugin.activerecord.Model;
import com.saodisheng.model.User;

/**
 * 个人空间、用户空间的粉丝数量旁边添加一个赞数量： 关注(19)  粉丝(999)  赞(9999)
 *
 *
 * 点赞功能，每篇post都可以被人点赞
 * project、project_like、share、share_like ...
 *
 * @author 扫地生_saodisheng
 * @date 2022/1/28
 */
public interface LikeService {
    /**
     * 点赞
     * @param myId 点赞的用户 id，即当前登录用户
     * @param refType 被点赞的表名
     * @param refId 被点赞的表名中的相应的 id 值
     * @param isAdd true 为点赞，false 为取消点赞，null 需要判断是否已被点赞
     */
    Ret like(int myId, String refType, int refId, Boolean isAdd);

    /**
     * 对 refType + refId 指向的资源，是否已点赞
     * @param UserId
     * @param refType
     * @param refId
     * @return
     */
    boolean isLike(int UserId, String refType, int refId);

    /**
     * 设置 article detail 页面的点赞状态
     */
    @SuppressWarnings("rawtypes")
	void setLikeStatus(User loginUser, String refType, Model refObj, Ret ret);


    /**
     * 删除 article 时，要删除相关的点赞记录
     */
    void deleteByArticleDeleted(int refId);

    /**
     * 删除 Video 时，要删除相关的点赞记录
     */
    void deleteByVideoDeleted(int refId);
    
    /**
     * 删除 gallery 时，要删除相关的点赞记录
     */
    void deleteByGalleryDeleted(int refId);
    
    /**
     * 删除 post 时，要删除相关的点赞记录
     */
    void deleteByPostDeleted(int refId);
}

